home *** CD-ROM | disk | FTP | other *** search
- In article <3nn9gp$nj0@ixnews2.ix.netcom.com> plugg@ix.netcom.com (Sandra Desmond) writes:
-
- >Cool! Maybe we'll be able to figure out how Michael Abrash managed to
- >get all of Quake's divides for free!
-
- >In any case it'll certainly help improve the signal-to-noise ratio here
- >;)
-
- >Cheers,
-
- >Mark Feldman
-
- Hello Mr. Feldman.
-
- I have already proposed this solution many times in this newsgroup, but I'll
- reiterate as it seem to have evaded everyone's memory. My personnal opinion of
- it is it's not worth it, but here goes anyhow.
-
- Say the constant-z lines are within 45 degrees of being vertical (the
- algorithm can be tweaked to work with any angle, either by using a reflection
- or by really tweaking it, but I won't discuss this). For example, here are the
- constant-z lines:
-
- abcdefg
- abcdefg
- bcdefgh
- bcdefgh
- bcdefgh
- cdefghi
- cdefghi
- defghij
- defghij
- defghij
- efghijk
-
- etc...
-
- Now look at a horizontal scan-line. You intersect exactly one constant-z line
- per pixel. The first horizontal line looks like this:
-
- abcdefg
-
- If we were to have a wider screen to the right, we would also have the
- constant-z lines h,i,j and k. Example:
-
- abcdefghijk
-
- Now, calculate the real texture coordinate for all these pixels. You now know
- the true texture coordinate for all pixels of all constant-z lines for the
- first horizontal-line.
-
- As you go to the second horizontal line, you can incrementally find the new
- texture coordinates of these constant-z lines, them being constant-z that is.
-
- Thus, for each horizontal line, you can incrementally calculate the new
- texture coordinate of all constant-z lines.
-
- What we do is generate the spans with a conventional horizontal scan-line
- algorithm and only draw the relevant pixels (while we still possibly
- incrementally calculate more than the relevant pixels).
-
- Thus, if the polygon to draw is:
- d
- cde
- cdef
- bcdefg
- defg
- ghi
- i
-
- We initially need to calculate the true texture coordinate of the topmost
- pixel, then for all pixels on the "d" constant-z line, the calculations can be
- performed incrementally. On the second horizontal scanline, we need to
- calculate the true texture coordinates for the pixel in the c and e constant-z
- lines, but then we can calculate all of the texture coordinates on constant-z
- lines "c", "d" and "e" incrementally. On the next horizontal scanline, we need
- to calculate the true texture coordinate of the "f" scanline, but thereafter
- we can calculate it incrementally. Etc...
-
- The advantages are nearly the same as the straight constant-z polygon drawing
- algorithm. The disadvantages however, are a bit different. It will not be as
- fast, involving one more lookup per pixel. The algorithm is also much more
- complicated and difficult to implant. However, we removed the aliasing from
- the polygon's edges (e.g. the outline will be correct in the sense that it
- will be exactly the same one as when generated with a horizontal scan-line
- algorithm).
-
- I know this algorithm is not discussed at all in Zed3D, but there are so many
- things that need adding in Zed3D that I am not totally certain that I will be
- able to add this particular one (since I am going on a 3 week trip very soon).
- As a matter of fact, I'm going to copy and paste this article as is in Zed3D
- now that I think of it.
-
- Wish you the best of lucks, and may this help you.
-
- Sebastien Loisel
-
-